Integrated circuit devices are used in a wide variety of modern appliances, such as computers, automobiles, telephones, televisions, manufacturing tools, satellites and even toys. While even a small integrated circuit device can provide a great deal of functionality, almost every integrated circuit device must be electrically connected to an input or output device, to another integrated circuit device, or to some other electronic component in order to be useful. To provide these electrical connections, integrated circuit devices are typically mounted on a printed circuit board (PCB). Most printed circuit boards have a rigid, planar core. The core may be formed, for example, of a sheet of fiberglass material impregnated with epoxy. Conductive lines or “traces” then are formed on one or both surfaces of the core, to electronically connect the components attached to the printed circuit board. The traces may be formed of any desired conductive material, such as copper. With various manufacturing techniques, specific traces may be created by etching a single layer of conductive material in a photolithographic process.
Simple printed circuit boards may have only a single core, with traces on one or both sides of the core. More complex printed circuit boards, however, may have multiple cores, with traces on one or both sides of one or more of the cores. These multilayered printed circuit boards also may include layers of insulating material, to prevent traces on adjacent core surfaces from contacting. In addition, a multilayered printed circuit board will typically include one or more “vias” to electrically connect two or more different layers of the board. A via is created by drilling or otherwise forming a hole through one or more cores. The walls of the via may then be clad with conductive material to form an electrical connection between the different layers. Alternately or additionally, the entire via may be filled with conductive material to form the electrical connection. Some vias may pass through every layer of the board, while other vias may connect only some of the layers in the board. Some vias, referred to as “blind” vias, will connect only internal layers of the board, and are not connected to either the uppermost or lowermost layers. As will be explained in more detail below, vias are employed where, for example, a component requires more traces than can be routed in a corresponding area of a single board layer. The vias allow the component to connect to traces on other layers of the board.
There are a number of steps performed in the design of a printed circuit board. Initially, a designer will create a schematic diagram for the system to be connected through the printed circuit board. This process includes identifying each component that will be included in the system. A system can include “active” components, such as field programmable gate array (FPGA) integrated circuits or application-specific integrated circuits (ASICs). A system also can include “passive” components, such as, resistors, capacitors, and inductors. In addition to identifying each component, the schematic design will represent the electrical connections that must be formed between each component. Next, a designer typically will verify the functionality of the system described in the schematic design. The design may, for example, use software modeling tools to ensure that the system described in the schematic will reliably perform the desired operations. If any errors are detected, then the schematic design may be corrected to address the errors, and the functional verification process repeated.
Once the schematic design is finalized, the designer will typically create a physical design to implement the schematic design. This physical design is sometimes referred to as the design layout or layout design. Herein, design layout and layout design are used interchangeably. The designer will begin by selecting a physical location in the layout design for each component. When a location for a component has been selected, the designer may add a component object, representing that component, to that location in the design layout. The component object may include a variety of information regarding the physical component it represents, such as the configuration of the connection pins used to electrically connect that component to other components. With an integrated circuit device, for example, the substrate with the integrated circuit will be encased in a package for protection from the environment. The connection pins serve to provide an electrical connection, through the packaging, to the electrical contacts of the integrated circuit. After the component objects for the various components are located in the design layout, the designer then will attempt to route traces in the design layout to connect the components as specified in the schematic design.
In order to route traces efficiently, a designer may display netlines before routing the traces. A netline is a graphical line rendered in a physical design for a printed circuit board that spans selected pins in a “net.” FIG. 1 illustrates a design layout 101 containing netlines 103 extending between pins 105 of two separate components 107 and 109. Routing traces is complicated by the fact that many systems have a variety of constraints restricting how a designer can route the traces. For example, a component's minimum current requirement may require that the trace supplying that current have a minimum width. Also, traces may require a minimum separation distance to prevent unacceptable crosstalk. Still further, if a component requires a differential pair connection, then the traces used to implement that differential pair may need to have the same length and maintain a constant distance from each other. Timing constraints may limit the length and/or impedance of a trace. Additionally, traces may not cross, as a connection between the crossing traces would be created.
To facilitate routing traces that do not cross over each other, designers will typically assign a bias to each layer of the printed circuit board. The layer bias will specify which direction, for example horizontal or vertical, the traces within that layer should be routed. FIG. 2 illustrates the layout design 101 of FIG. 1, including the components 107 and 109. As can be seen in FIG. 2, traces 203 have been added to the layout design 101. The traces 203 connect the pins 105, as indicated by the netlines 103 from FIG. 1. As further illustrated, some of the traces 203 are routed horizontally while others of the traces 203 are routed vertically on a separate layer. More particularly, FIG. 2 shows a horizontal trace 205 and a vertical trace 207. As can be seen, the horizontal trace 205 is routed on a different layer of the layout design than the vertical trace 207 is routed.
After creating an initial physical design and routing traces within the layout design, a designer may revise either the physical design or the layout design several times before it is finished. These revisions may include, for example, moving the pathways for traces, altering the width of traces at various points along their lengths, creating partial traces or “hangers,” moving the location of one or more of the components, and rotating the orientation of one or more of the components. Each revision, however, may itself require related revisions. For example, if a component is moved or rotated, then every existing trace associated with that component must be discarded and replaced.
Most modern designs contain many components, and as a result, many more netlines 103 and traces 203 than illustrates by FIG. 1 and FIG. 2. For example, a modern design may contain thousands of components and thousands of netlines, which adds to the complexity and tedium of routing traces. In order to assist in routing these modern designs, automated trace routing tools, such as for example the Expedition toolset available from Mentor Graphics Corporation of Wilsonville, Oreg., have been developed. However, although automated trace routing tools exist, manually routing design layouts is still preferably in many instances. More particularly, the traces routed by hand may often be placed in a more preferably position that the traces routed by an automated trace routing tools.